package br.com.toscano.gobra.view;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.faces.model.SelectItem;
import javax.inject.Inject;
import br.gov.frameworkdemoiselle.annotation.NextView;
import br.gov.frameworkdemoiselle.annotation.PreviousView;
import br.gov.frameworkdemoiselle.stereotype.ViewController;
import br.gov.frameworkdemoiselle.template.AbstractListPageBean;
import br.gov.frameworkdemoiselle.transaction.Transactional;
import br.com.toscano.gobra.business.LicitacaoBC;
import br.com.toscano.gobra.business.UnidadeOrcamentariaBC;
import br.com.toscano.gobra.domain.Licitacao;
import br.com.toscano.gobra.domain.UnidadeOrcamentaria;

@ViewController
@NextView("./licitacao_edit.jsf")
@PreviousView("./licitacao_list.jsf")
public class LicitacaoListMB extends AbstractListPageBean<Licitacao, Long> {

	private static final long serialVersionUID = 1L;

	@Inject
	private UnidadeOrcamentariaBC unidadeOrcamentariaBC;
	private List<SelectItem> unidadeOrcamentarias;
	private Long unidadeOrcamentaria;

	private String numeroLicitacao;
	
	public String getNumeroLicitacao() {
		return numeroLicitacao;
	}

	public void setNumeroLicitacao(String numeroLicitacao) {
		this.numeroLicitacao = numeroLicitacao;
	}

	public List<SelectItem> getUnidadeOrcamentarias() {
		unidadeOrcamentarias = new ArrayList<SelectItem>();
		List<UnidadeOrcamentaria> lista = unidadeOrcamentariaBC.findAll();
		for (UnidadeOrcamentaria obj: lista) {
			unidadeOrcamentarias.add(new SelectItem(obj.getId() , obj.getDescricao()));
		}
		return unidadeOrcamentarias;
	}

	public void setUnidadeOrcamentarias(List<SelectItem> unidadeOrcamentarias) {
		this.unidadeOrcamentarias = unidadeOrcamentarias;
	}

	public Long getUnidadeOrcamentaria() {
		return unidadeOrcamentaria;
	}

	public void setUnidadeOrcamentaria(Long unidadeOrcamentaria) {
		this.unidadeOrcamentaria = unidadeOrcamentaria;
	}

	@Inject
	private LicitacaoBC licitacaoBC;
	
	@Override
	protected List<Licitacao> handleResultList() {
		return this.licitacaoBC.findAll();
	}
	
	@Transactional
	public String deleteSelection() {
		boolean delete;
		for (Iterator<Long> iter = getSelection().keySet().iterator(); iter.hasNext();) {
			Long id = iter.next();
			delete = getSelection().get(id);
			if (delete) {
				licitacaoBC.delete(id);
				iter.remove();
			}
		}
		return getPreviousView();
	}

}